from django.shortcuts import render
from django.views import View
from .models import Area
from django import http
from django.core.cache import cache
# Create your views here.


class ProvinceAreasView(View):
    def get(self,request):

        try:
            # 查询省级
            province_model_list = Area.objects.filter(parent__isnull=True)

            # 遍历查询出来的所有省地区的列表 等到每一个对象 创建一个空列表 把每一个省级城市的id name 属性添加进去
            province_list = []
            for province in province_model_list:
                province_list.append({'id':province.id,'name':province.name})

                #增加django的缓存功能
                cache.set('province_list',province_list,3600)
        except Exception as e :
            return http.JsonResponse({'code': 400, 'errmsg': '省份数据错误'})

        return http.JsonResponse({'code': 0, 'errmsg': 'OK','province_list': province_list } )


class SubAreasView(View):

    def get(self,request,pk):

        # 先判断是否有缓存
        sub_data = cache.get('sub_area'+ pk)

        if not sub_data:

            try:


                # 根据Pk查询 省
                parent_model = Area.objects.get(id=pk)
                # 根据传入的Pk 查找市 或者 区 得到一个市或者区的列表
                sub_model_list = Area.objects.filter(parent=pk)




                # 查到市 或者区后 加入一个sub_list 列表

                sub_list = []

                for sub_model in sub_model_list:

                    sub_list.append({'id':sub_model.id,'name':sub_model.name})


                sub_data = {
                    'id':parent_model.id,
                    'name':parent_model.name,
                    'subs':sub_list

                }

                # 设置缓存
                cache.set('sub_area_' + pk,sub_data)
            except Exception as e:
                return http.JsonResponse({'code': 400,
                                     'errmsg': '城市或区县数据错误'})

        return http.JsonResponse({'code': 0,
                             'errmsg': 'OK',
                             'sub_data': sub_data})











